const router = require('express').Router();// 分发请求
const { v4: uuidv4 } = require('uuid');// 生成id (随机字符串)
const walletModel = require('../../model/walletModel');// 执行sql语句的模块
const aes = require('../../common/aes');//加密的工具
const Jwt = require('../../common/token/jwt');//处理token的工具 json web token

// 开通钱包
// 加密密码（保护用户数据） 有邮箱验证 (辩别用户的真实性)
// URL: /api/wallet/create
// 用户ID,手机号,支付密码
// 参数：token, user_id, user_phone, wallet_pwd
// 请求方式：POST
router.post('/create', async (req, res) => {
    let token = req.body.token || req.headers.token;
    let result = new Jwt(token).verifyToken()
    if (result.code == 200) {
        // 登录状态
        let user_id = result.info.data;//用户id
         // 获取前端提交的参数
        let {user_phone, wallet_pwd } = req.body;
        // 为了减少报错 做一层判断
        if (user_phone == undefined || wallet_pwd == undefined) {
            res.send({
                code: -1,
                msg: '缺少参数，请重新填写。'
            })
            return false;
        }
        // 加密密码
        wallet_pwd = aes.aesEncrypt(wallet_pwd);
        // 调用函数进行注册
        await walletModel.create(user_id, user_phone, wallet_pwd)
            .then(
                (data) => {
                    // 开通钱包成功
                    res.send(data)
                },
                (err) => {
                    // 开通钱包失败
                    res.send(err)
                }
            )

    }
    else {
        // 不是登录状态
        res.send({
            code: -1,
            msg: '您还没有登录哦。'
        })
    }
})


// 给钱包充值
// URL: /api/wallet/recharge
// 参数：token, money
// 请求方式：POST
router.post('/recharge', async (req, res) => {
    let token = req.body.token || req.headers.token;
    let result = new Jwt(token).verifyToken()
    if (result.code == 200) {
        // 登录状态
        let user_id = result.info.data;//用户id
        let money = req.body.money
        if(money!=undefined) {
            // 充值
            await walletModel.recharge(user_id,money).then(
                (content) => {
                    // 响应数据给前端
                    res.send(content)
                },
                (err) => {
                    res.send(err)
                }
            )
        }
        else {
            // 缺少参数
            res.send({
                code: -1,
                msg: '缺少参数。'
            })
        }
        
    }
    else {
        // 不是登录状态
        res.send({
            code: -1,
            msg: '您还没有登录哦。'
        })
    }
})

// 费用支出
// URL: /api/wallet/payout
// 参数：token, money
// 请求方式：POST
router.post('/payout', async (req, res) => {
    let token = req.body.token || req.headers.token;
    let result = new Jwt(token).verifyToken()
    if (result.code == 200) {
        // 登录状态
        let user_id = result.info.data;//用户id
        let money = req.body.money
        let wallet_pwd = req.body.wallet_pwd
        if(money!=undefined) {
            // 充值
            await walletModel.payout(user_id,money,wallet_pwd).then(
                (content) => {
                    // 响应数据给前端
                    res.send(content)
                },
                (err) => {
                    res.send(err)
                }
            )
        }
        else {
            // 缺少参数
            res.send({
                code: -1,
                msg: '缺少参数。'
            })
        }
        
    }
    else {
        // 不是登录状态
        res.send({
            code: -1,
            msg: '您还没有登录哦。'
        })
    }
})

// 设置支付密码
// URL: /api/wallet/modify_paypwd
// 参数：token, wallet_pwd
// 请求方式：POST
router.post('/modify_paypwd', async (req, res) => {
    let token = req.body.token || req.headers.token;
    let result = new Jwt(token).verifyToken()
    if (result.code == 200) {
        // 登录状态
        let user_id = result.info.data;//用户id
        let wallet_pwd = req.body.wallet_pwd
        if(wallet_pwd !=undefined) {
             // 加密密码
             wallet_pwd = aes.aesEncrypt(wallet_pwd);
            // 充值
            await walletModel.modify_paypwd(user_id,wallet_pwd).then(
                (content) => {
                    // 响应数据给前端
                    res.send(content)
                },
                (err) => {
                    res.send(err)
                }
            )
        }
        else {
            // 缺少参数
            res.send({
                code: -1,
                msg: '缺少参数。'
            })
        }
        
    }
    else {
        // 不是登录状态
        res.send({
            code: -1,
            msg: '您还没有登录哦。'
        })
    }
})


// 获取钱包信息
// URL: /api/wallet/info
// 参数：token
// 请求方式：POST
router.post('/info', async (req, res) => {
    let token = req.body.token || req.headers.token;
    let result = new Jwt(token).verifyToken()
    if (result.code == 200) {
        // 登录状态
        let user_id = result.info.data;//用户id
        await walletModel.info(user_id).then(
            (content) => {
                // 响应数据给前端
                res.send(content)
            },
            (err) => {
                res.send(err)
            }
        )
    }
    else {
        // 不是登录状态
        res.send({
            code: -1,
            msg: '您还没有登录哦。'
        })
    }
})

module.exports = router;